package site.addzero.cli.autoinit.windows

import org.koin.core.annotation.Single
import site.addzero.cli.platform.PlatformTools.isWindows
import site.addzero.cli.platform.runCmd
import site.addzero.task.InitTask

/**
 * Windows PowerShell 环境初始化类
 * 负责初始化 PowerShell 环境，包括创建配置文件和设置执行策略
 */
@Single
class AutoInitPowerShellEnv : InitTask {
    override val support: Boolean = isWindows()

    /**
     * 执行 PowerShell 环境初始化任务
     */
    override suspend fun asynctask(): Boolean {
        // 检查是否为 Windows 系统
        if (!isWindows()) return true

        println("正在初始化 PowerShell 环境...")
        var success = true

        // 一键创建并打开配置文件
        val createProfileCommand = "powershell -Command \"if (!(Test-Path \$profile)) { New-Item -Path \$profile -ItemType File -Force }\""
        val createProfileResult = createProfileCommand.runCmd()

        if (createProfileResult.isSuccess()) {
            println("PowerShell 配置文件已创建")
        } else {
            println("创建 PowerShell 配置文件时出现问题: ${createProfileResult.error}")
            success = false
        }

        // 允许PS脚本执行
        val setExecutionPolicyCommand = "powershell -Command \"Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force\""
        val setExecutionPolicyResult = setExecutionPolicyCommand.runCmd()

        if (setExecutionPolicyResult.isSuccess()) {
            println("PowerShell 执行策略已设置为 RemoteSigned")
        } else {
            println("设置 PowerShell 执行策略时出现问题: ${setExecutionPolicyResult.error}")
            success = false
        }

        println("PowerShell 环境初始化完成")
        return success
    }
}
